package top.szhome.framework.starter.db.support;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import top.szhome.framework.core.tools.support.BaseConverter;
import top.szhome.framework.core.tools.support.Pagination;

import java.util.List;

/**
 * 简单服务定义
 *
 * @author 唐加利
 * @date 2023/7/27
 **/
public interface SimpleService<C extends BaseConverter<D, T, V>, D, T extends BaseEntity, V> extends BaseService<T>{

    /**
     * 获取类型转换器
     * @return
     */
    C getBaseConvert();

    /**
     * 获取数据实体详情
     * @param id    数据实体ID
     * @return 返回指定ID的数据实体信息
     */
    V get(Long id);

    /**
     * 新增数据实体
     * @param req   数据实体信息
     * @return 返回保存的数据实体的ID
     */
    Long insert(D req);

    /**
     * 删除数据实体
     * @param ids    数据实体ID
     * @return  如果删除成功，返回true；反之，返回false
     */
    Boolean delete(List<Long> ids);

    /**
     * 更新数据实体
     * @param req   数据实体信息
     * @return 如果更新成功返回true，反之返回false
     */
    Boolean update(D req);

    /**
     * 查询符合条件的实体数据
     * @param query 查询条件
     * @return 返回符合条件的实体数据
     */
    List<V> list(Object query);

    /**
     * 分页查询数据实体，默认单页10条数据
     * @param query 查询条件
     * @param page  分页信息
     * @return 返回符合条件的单页数据
     */
    Pagination<V> page(Object query, Page page);
}
